package leetcode.p101;

import java.util.LinkedList;
import java.util.Queue;

/***
 * 判断是否是镜像二叉树
 */
public class Solution {


    //迭代写法
    public boolean isM2(TreeNode root) {
        Queue<TreeNode> q = new LinkedList<>();
        q.add(root);
        q.add(root);
        while (!q.isEmpty()) {
            TreeNode t1 = q.poll();
            TreeNode t2 = q.poll();
            if(t1 == null && t2 == null) continue;
            if(t1 == null || t2 == null) return false;
            if(t1.val != t2.val) return false;
            q.add(t1.left);
            q.add(t2.right);
            q.add(t1.right);
            q.add(t2.left);

        }
        return true;
    }

    //递归写法
    public boolean isMirror(TreeNode t1,TreeNode t2){
        if(t1 == null && t2 == null) return true;
        if(t1== null || t2 == null) return false;
        return (t1.val == t2.val)
                && isMirror(t1.left,t2.right)
                &&isMirror(t1.right,t2.left);
    }


     public class TreeNode {
        int val;
       TreeNode left;
      TreeNode right;
        TreeNode() {}
       TreeNode(int val) { this.val = val; }
              TreeNode(int val, TreeNode left, TreeNode right) {
                  this.val = val;
                  this.left = left;
                  this.right = right;
              }
          }

}


